﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ServiceModel.Channels;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.SocialWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.UtilidadesWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.RelatorioWs;


namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ClientePresentearAmigo : System.Web.UI.Page
    {
        ObjetoCliente cliente = new ObjetoCliente();
        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        PubClub_Social_WS webServiceAmizade = new PubClub_Social_WS();
        Utilizadades_WS webServiceUtilidades = new Utilizadades_WS();
        PubClub_Relatorio_WS webServiceRelatorios = new PubClub_Relatorio_WS();
        


        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Cliente"] == null)
            {
                Response.Redirect("Login.aspx?Logout=2");
            }
            else
            {
                cliente = webServiceCliente.GetCliente(Convert.ToInt32(Session["Cliente"]));
            }

            BindingList<Saldo> listaBebidaESaldo = new BindingList<Saldo>(webServiceRelatorios.SaldoCliente(cliente.ClienteId));
            BindingList<ObjetoAmizade> listaAmigos = new BindingList<ObjetoAmizade>(webServiceAmizade.MinhasAmizades(cliente.ClienteId));
            BindingList<ObjetoBebida> listaBebidas = new BindingList<ObjetoBebida>(webServiceUtilidades.SearchBebidas(""));

            if (listaAmigos.Count() == 0)
            {
                LabelAviso.Text = "Você não possui nenhum amigo.";
                LabelAviso.ForeColor = System.Drawing.Color.Red;
                LabelAviso.Visible = true;
                DropDownListAmigos.Enabled = false;
                DropDownListBebidas.Enabled = false;
                ButtonAdicionar.Enabled = false;
                TextBoxQtde.Enabled = false;
                return;
                
            }

            //if (Session["Aux"] == null)
            //{
            //    Session["NumeroProvisorio"] = 0;
            //}

            //foreach (var item in listaBebidaESaldo)
            //{
            //    ListItem ItemDalistaBebidaeSaldo = new ListItem();
            //    ItemDalistaBebidaeSaldo.Value = item.BebidaId.ToString();

            //    ObjetoBebida bebida = webServiceUtilidades.GetBebidaById(item.BebidaId);
            //    ItemDalistaBebidaeSaldo.Text = bebida.Descricao + " | Doses disponíveis :  " + Convert.ToInt32(item.Resultado - Convert.ToInt32(Session["NumeroProvisorio"]));

            //    DropDownListBebidas.Items.Add(ItemDalistaBebidaeSaldo);

            //}
            

            if (!Page.IsPostBack)
            {
                foreach (var item in listaAmigos)
                {
                    ListItem itemDaListaDeAmigos = new ListItem();
                    itemDaListaDeAmigos.Value = item.ClienteId2.ToString();
                    itemDaListaDeAmigos.Text = webServiceCliente.GetCliente(item.ClienteId2).Nome;
                    DropDownListAmigos.Items.Add(itemDaListaDeAmigos);

                }

                foreach (var item in listaBebidaESaldo)
                {
                    ListItem ItemDalistaBebidaeSaldo = new ListItem();
                    ItemDalistaBebidaeSaldo.Value = item.BebidaId.ToString();

                    ObjetoBebida bebida = webServiceUtilidades.GetBebidaById(item.BebidaId);
                    ItemDalistaBebidaeSaldo.Text = bebida.Descricao + " | Doses disponíveis :  " + Convert.ToInt32(item.Resultado);

                    DropDownListBebidas.Items.Add(ItemDalistaBebidaeSaldo);

                }

            } 
          


        }

        protected void ButtonAdicionar_Click(object sender, EventArgs e)
        {
            LabelAviso.Visible = false;
            int qtdeDisponivel = Convert.ToInt32(DropDownListBebidas.SelectedItem.Text.Substring(DropDownListBebidas.SelectedItem.Text.Length - 3,3)); 

            if (TextBoxQtde.Text.Trim().Equals(""))
            {
                LabelAviso.Text = "Quantidade não pode ser vazio";
                LabelAviso.ForeColor = System.Drawing.Color.Red;
                LabelAviso.Visible = true;
                TextBoxQtde.Focus();
                HyperLinkProximo.Visible = false;
                return;
            }
            else
            {
                try
                {
                    Convert.ToInt32(TextBoxQtde.Text.Trim());

                }
                catch (FormatException)
                {

                    LabelAviso.Text = "Informe apenas números.";
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                    TextBoxQtde.Focus();
                    HyperLinkProximo.Visible = false;
                    return;
                }

                if (Convert.ToInt32(TextBoxQtde.Text.Trim()) <= 0)
                {
                    LabelAviso.Text = "Quantidade de doses não pode ser menor ou igual a zero.";
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                    TextBoxQtde.Focus();
                    HyperLinkProximo.Visible = false;
                    return;
                }
                else
                {
                    if (Convert.ToInt32(TextBoxQtde.Text.Trim()) > qtdeDisponivel)
                    {
                        LabelAviso.Text = "Quantidade de doses informada maior que a disponível.";
                        LabelAviso.ForeColor = System.Drawing.Color.Red;
                        LabelAviso.Visible = true;
                        TextBoxQtde.Focus();
                        HyperLinkProximo.Visible = false;
                        return;
                    }
                    else
                    {
                        //Session["NumeroProvisorio"] = Convert.ToInt32(TextBoxQtde.Text);
                        //Session["Aux"] = "";
                        ObjetoCliente amigo = webServiceCliente.GetCliente(Convert.ToInt32(DropDownListAmigos.SelectedValue));
                        HyperLinkProximo.NavigateUrl = "~/GUI/ClientePresentearAmigoPasso2.aspx?AmigoId= " + amigo.ClienteId;
                        HyperLinkProximo.Visible = true;


                        String[] listaCarrinho;
                        string carrinho;
                        bool jaExiste = false;


                        int idBebida = Convert.ToInt32(DropDownListBebidas.SelectedValue.ToString());
                        int qtde = Convert.ToInt32(TextBoxQtde.Text.Trim());
                        int novaQtd = 0;


                        carrinho = Session["carrinho"].ToString();

                        listaCarrinho = carrinho.Split(',');

                        if (listaCarrinho.Count() == 0)
                        {
                            Session["carrinho"] += idBebida + "-" + qtde + ",";
                        }
                        else
                        {

                            for (int i = 0; i < listaCarrinho.Count() - 1; i++)
                            {
                                if (listaCarrinho[i].Substring(0, listaCarrinho[i].IndexOf("-")).Equals(idBebida.ToString()))
                                {
                                    novaQtd = Convert.ToInt32(listaCarrinho[i].Substring(listaCarrinho[i].IndexOf("-") + 1, (listaCarrinho[i].Length - 1) - listaCarrinho[i].IndexOf("-")));
                                    listaCarrinho[i] = idBebida + "-" + (novaQtd + Convert.ToInt32(qtde)).ToString();
                                    jaExiste = true;
                                }
                            }

                            if (jaExiste == true)
                            {
                                Session["carrinho"] = "";
                                for (int i = 0; i < listaCarrinho.Count() - 1; i++)
                                {
                                    Session["carrinho"] = Session["carrinho"] + listaCarrinho[i].ToString() + ",";
                                }

                            }
                            else
                            {
                                Session["carrinho"] += idBebida + "-" + qtde + ",";
                            }
                        }

                        LabelAviso.Text = "Presente incluido com sucesso!";
                        LabelAviso.ForeColor = System.Drawing.Color.Green;
                        LabelAviso.Visible = true;
                        TextBoxQtde.Focus();
                        HyperLinkProximo.Visible = true;
                    }
                }
            }

        }
    }
}